# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.WalletObjects.V1.Model.BoardingAndSeatingInfo do
  @moduledoc """


  ## Attributes

  *   `boardingDoor` (*type:* `String.t`, *default:* `nil`) - Set this field only if this flight boards through more than one door or bridge and you want to explicitly print the door location on the boarding pass. Most airlines route their passengers to the right door or bridge by refering to doors/bridges by the `seatClass`. In those cases `boardingDoor` should not be set.
  *   `boardingGroup` (*type:* `String.t`, *default:* `nil`) - The value of boarding group (or zone) this passenger shall board with. eg: "B" The label for this value will be determined by the `boardingPolicy` field in the `flightClass` referenced by this object.
  *   `boardingPosition` (*type:* `String.t`, *default:* `nil`) - The value of boarding position. eg: "76"
  *   `boardingPrivilegeImage` (*type:* `GoogleApi.WalletObjects.V1.Model.Image.t`, *default:* `nil`) - A small image shown above the boarding barcode. Airlines can use it to communicate any special boarding privileges. In the event the security program logo is also set, this image might be rendered alongside the logo for that security program.
  *   `kind` (*type:* `String.t`, *default:* `nil`) - Identifies what kind of resource this is. Value: the fixed string `"walletobjects#boardingAndSeatingInfo"`.
  *   `seatAssignment` (*type:* `GoogleApi.WalletObjects.V1.Model.LocalizedString.t`, *default:* `nil`) - The passenger's seat assignment. To be used when there is no specific identifier to use in `seatNumber`. eg: "assigned at gate"
  *   `seatClass` (*type:* `String.t`, *default:* `nil`) - The value of the seat class. eg: "Economy" or "Economy Plus"
  *   `seatNumber` (*type:* `String.t`, *default:* `nil`) - The value of passenger seat. If there is no specific identifier, use `seatAssignment` instead. eg: "25A"
  *   `sequenceNumber` (*type:* `String.t`, *default:* `nil`) - The sequence number on the boarding pass. This usually matches the sequence in which the passengers checked in. Airline might use the number for manual boarding and bag tags. eg: "49"
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :boardingDoor => String.t() | nil,
          :boardingGroup => String.t() | nil,
          :boardingPosition => String.t() | nil,
          :boardingPrivilegeImage => GoogleApi.WalletObjects.V1.Model.Image.t() | nil,
          :kind => String.t() | nil,
          :seatAssignment => GoogleApi.WalletObjects.V1.Model.LocalizedString.t() | nil,
          :seatClass => String.t() | nil,
          :seatNumber => String.t() | nil,
          :sequenceNumber => String.t() | nil
        }

  field(:boardingDoor)
  field(:boardingGroup)
  field(:boardingPosition)
  field(:boardingPrivilegeImage, as: GoogleApi.WalletObjects.V1.Model.Image)
  field(:kind)
  field(:seatAssignment, as: GoogleApi.WalletObjects.V1.Model.LocalizedString)
  field(:seatClass)
  field(:seatNumber)
  field(:sequenceNumber)
end

defimpl Poison.Decoder, for: GoogleApi.WalletObjects.V1.Model.BoardingAndSeatingInfo do
  def decode(value, options) do
    GoogleApi.WalletObjects.V1.Model.BoardingAndSeatingInfo.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.WalletObjects.V1.Model.BoardingAndSeatingInfo do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
